ফাইল Compression করতে FileUtils এবং IOUtils ব্যবহার

Java Technologies - অ্যাপাচি কমন্স আইও (Apache Common IO) Apache Commons IO এর মাধ্যমে File Compression |
169
169

ফাইল কমপ্রেশন (File Compression) এমন একটি প্রক্রিয়া যার মাধ্যমে ফাইলের আকার কমানো হয়, যাতে এটি আরও সঞ্চয়যোগ্য এবং দ্রুত স্থানান্তরযোগ্য হয়। অ্যাপাচি কমন্স আইও (Apache Commons IO) লাইব্রেরি সরাসরি ফাইল কমপ্রেশন সমর্থন না করলেও, এটি ফাইলের সাথে কাজ করার জন্য ইউটিলিটি মেথড সরবরাহ করে। আপনি FileUtils এবং IOUtils এর সাহায্যে ফাইল কমপ্রেশন করতে পারবেন, তবে অ্যাপাচি কমন্স Compression লাইব্রেরি বা জাভার স্ট্যান্ডার্ড java.util.zip লাইব্রেরি ব্যবহার করাও উপকারী হতে পারে।

এই টিউটোরিয়ালে আমরা দেখব কিভাবে FileUtils এবং IOUtils ব্যবহার করে ফাইল কমপ্রেশন করতে হবে।


১. FileUtils ব্যবহার করে ফাইল কমপ্রেশন

যদিও Apache Commons IO সরাসরি ফাইল কমপ্রেশন হ্যান্ডল করতে পারে না, তবে আপনি FileUtils ক্লাস ব্যবহার করে ফাইলের কনটেন্ট সহজেই পড়তে এবং লেখতে পারেন, যা Java's java.util.zip প্যাকেজের সাথে মিলে ফাইল কমপ্রেশন করতে সহায়ক।

উদাহরণ: .zip ফাইল তৈরি করা (Java ZipStream এর সাথে)

import org.apache.commons.io.FileUtils;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class FileCompressionExample {
    public static void main(String[] args) {
        // ইনপুট ফাইল এবং আউটপুট জিপ ফাইলের পাথ
        File inputFile = new File("example.txt");
        File zipFile = new File("example.zip");

        try (FileInputStream fis = new FileInputStream(inputFile);
             FileOutputStream fos = new FileOutputStream(zipFile);
             ZipOutputStream zipOut = new ZipOutputStream(fos)) {

            // জিপ এন্ট্রি তৈরি করা
            ZipEntry zipEntry = new ZipEntry(inputFile.getName());
            zipOut.putNextEntry(zipEntry);

            // ফাইল থেকে ডেটা পড়া এবং জিপ ফাইলে লেখা
            IOUtils.copy(fis, zipOut);

            // জিপ ফাইলের লেখার শেষ
            zipOut.closeEntry();
            System.out.println("File compressed successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ZipOutputStream ব্যবহার করে .zip ফাইল তৈরি করা হয়েছে।
  • IOUtils.copy(fis, zipOut) এই মেথডটি ইনপুট ফাইল থেকে ডেটা পড়ে এবং আউটপুট জিপ ফাইলে লেখে।
  • এই উদাহরণে Apache Commons IO's IOUtils ব্যবহার করে স্ট্রিম কপি করা হচ্ছে।

২. IOUtils ব্যবহার করে ফাইল কমপ্রেশন

IOUtils ক্লাসটি ইনপুট এবং আউটপুট স্ট্রিমের জন্য একটি কার্যকরী ইউটিলিটি সরবরাহ করে, যা কমপ্রেশন (Compression) এবং এক্সট্রাকশন (Extraction) কাজগুলো সহজ করে।

উদাহরণ: .gz ফাইল কমপ্রেশন (gzip ব্যবহার)

import org.apache.commons.io.IOUtils;
import java.io.*;
import java.util.zip.GZIPOutputStream;

public class GzipCompressionExample {
    public static void main(String[] args) {
        // ইনপুট ফাইল এবং আউটপুট GZIP ফাইলের পাথ
        File inputFile = new File("example.txt");
        File gzipFile = new File("example.gz");

        try (FileInputStream fis = new FileInputStream(inputFile);
             FileOutputStream fos = new FileOutputStream(gzipFile);
             GZIPOutputStream gzipOut = new GZIPOutputStream(fos)) {

            // GZIP আউটপুট স্ট্রিমে ইনপুট ফাইলের ডেটা কপি করা
            IOUtils.copy(fis, gzipOut);
            System.out.println("File compressed to GZIP format successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • GZIPOutputStream ব্যবহার করে .gz ফাইল তৈরি করা হচ্ছে।
  • IOUtils.copy(fis, gzipOut) মেথডটি ইনপুট ফাইল থেকে ডেটা পড়ে এবং আউটপুট GZIP ফাইলে লেখে।
  • GZIPOutputStream একটি স্ট্যান্ডার্ড জাভা ক্লাস যা ফাইল কমপ্রেশন করতে সাহায্য করে, তবে Apache Commons IO's IOUtils এটিকে সহজ এবং দ্রুত করতে সাহায্য করে।

৩. ফাইল কমপ্রেশন এবং এক্সট্রাকশন (Extraction) এর জন্য অন্যান্য লাইব্রেরি

যদিও Apache Commons IO সরাসরি ফাইল কমপ্রেশন সমর্থন করে না, তবে Apache Commons Compress লাইব্রেরি একটি অত্যন্ত শক্তিশালী লাইব্রেরি যা gzip, zip, tar, bzip2 ইত্যাদি ফাইল ফরম্যাটের সাথে কাজ করার জন্য অনেক উন্নত ফিচার সরবরাহ করে।

উদাহরণ: Apache Commons Compress ব্যবহার করে .tar.gz ফাইল তৈরি

import org.apache.commons.compress.archivers.tar.*;
import org.apache.commons.compress.compressors.gzip.*;

import java.io.*;

public class TarGzipCompressionExample {
    public static void main(String[] args) {
        File inputFile = new File("example.txt");
        File outputTarGzFile = new File("example.tar.gz");

        try (FileOutputStream fos = new FileOutputStream(outputTarGzFile);
             GzipCompressorOutputStream gzipOut = new GzipCompressorOutputStream(fos);
             TarArchiveOutputStream tarOut = new TarArchiveOutputStream(gzipOut)) {

            tarOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);

            // ফাইল থেকে আর্কাইভ তৈরি করা
            TarArchiveEntry tarEntry = new TarArchiveEntry(inputFile, inputFile.getName());
            tarOut.putArchiveEntry(tarEntry);

            try (FileInputStream fis = new FileInputStream(inputFile)) {
                IOUtils.copy(fis, tarOut);
            }
            tarOut.closeArchiveEntry();
            System.out.println("File compressed to .tar.gz format successfully!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

সারাংশ

File Compression করার জন্য Apache Commons IO লাইব্রেরি কিছু গুরুত্বপূর্ণ ইউটিলিটি সরবরাহ করে, তবে এটি মূলত stream-based operations এবং buffering techniques ব্যবহার করে ফাইল কমপ্রেশনকে সহজ করে তোলে। IOUtils এবং FileUtils ক্লাস ব্যবহার করে ফাইল ডেটা সহজে gzip বা zip ফরম্যাটে কমপ্রেস করা যেতে পারে।

তবে যদি আপনি আরও উন্নত ফাইল কমপ্রেশন এবং এক্সট্রাকশন (extraction) ফিচার চান, তাহলে Apache Commons Compress লাইব্রেরি ব্যবহার করা উচিত, যা বিভিন্ন ফাইল ফরম্যাটের জন্য উন্নত সমর্থন প্রদান করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion